#include <iostream>
#include <sstream>
#include <vector>
#include <stack>

int sign(int num)
{
    if (num >= 0)
        return 1;
    else
        return 0;
}

int main()
{
    std::string istr;
    std::getline(std::cin, istr);

    std::vector<int> nums;
    int num;
    std::istringstream iss(istr);
    while (iss >> num)
    {
        nums.push_back(num);
        if (num == 0)
        {
            std::cout << -1 << std::endl;
            return 0;
        }
    }

    std::stack<int> sk_r;
    std::stack<int> sk_l;

    for (int i = 0; i < nums.size(); i++)
    {
        int k = nums[i];
        if (k < 0)
        {
            while (!sk_r.empty() && k < 0)
            {
                k = sk_r.top() + k;
                sk_r.pop();
            }
            if (k != 0 && sk_r.empty())
            {
                sk_r.push(k);
            }
        }
        else
        {
            while (!sk_l.empty() && k > 0)
            {
                k = sk_l.top() + k;
                sk_l.pop();
            }
            if (k != 0 && sk_l.empty())
            {
                sk_l.push(k);
            }
        }
    }

    std::cout << sk_r.size() + sk_l.size() << std::endl;

    return 0;
}